jihyeon's Blog

2023-11-14

유기농 배추


https://www.acmicpc.net/problem/1012

bfs혹은 dfs가 실행된 횟수 카운트하면 되는 문제

import sys def dfs(x, y): visited[x][y] = True directions = [(-1, 0), (1, 0), (0, -1), (0, 1)] for dx, dy in directions: nx, ny = x + dx, y + dy if nx < 0 or nx >= n or ny < 0 or ny >= m: continue if array[nx][ny] and not visited[nx][ny]: dfs(nx, ny) sys.setrecursionlimit(100000) for _ in range(int(input())): m, n, k = map(int, input().split()) array = [[0] * m for _ in range(n)] visited = [[False] * m for _ in range(n)] for _ in range(k): y, x = map(int, input().split()) array[x][y] = 1 result = 0 for i in range(n): for j in range(m): if array[i][j] and not visited[i][j]: dfs(i, j) result += 1 print(result)

Copyright (c) 2023. jihyeon Choi. | All Right Reserved.